Computing devices are initialized by firmware included within the device and this firmware provides a range of software services which facilitate the boot of the operating system (OS) as well as providing a smaller subset of these services that continue to be available after the operating system has booted. Firmware is software that has been written onto Read-Only Memory (ROM) modules including, but not limited to, ROM, PROM, EPROM, EEPROM, and Flash memory (collectively referred to hereafter as “ROM”). Among other services, the firmware is responsible for operation of the computing device until a boot process can be run which loads an operating system for the computing device into memory. Once loaded, the operating system is in charge of normal operation of the computing device although the provision of certain services after loading of the operating system may require a transition of control from the operating system back to the firmware for security and other reasons.
A computing device may contain one or more elements known as Central Processing Units (CPUs). These CPUs may have a normal operating mode and a second operating mode called System Management Mode (SMM). When the CPU is in normal operating mode it can access all elements of the computer except certain memory regions exclusively dedicated to SMM. In contrast, when the CPU is operating in SMM it is able to access all elements of the computing device including the memory locations allocated for SMM. The CPU may be directed to transition from normal operating mode to SMM by a number of triggers called System Management Interrupt (SMI) events. The exact triggers available differ somewhat among system designs but the result of an SMI being triggered is that execution in main memory is immediately suspended and execution begins at a specific location in SMM memory.
In addition to CPUs, computing devices include a number of other hardware components. These other hardware components may include a System Management Bus (SMBus) and one or more network interface controllers (NICs). The SMBus is a two-wire bus that provides lightweight communication with low-bandwidth devices on a motherboard. The devices can provide information over the SMBus that includes identifying information, their save state for a suspend event, and different types of errors, and can also accept control parameters and return device status. Exemplary devices that can communicate over an SMBus include power-related chips, temperature sensors, fan or voltage sensors, and clock chips, etc. NICs are used by computing devices for network communication. NICs may be built into the motherboard or may be provided via an expansion card plugged into a bus on the computing device. NICs implement the electronic circuitry required to communicate using a specific physical layer and data link layer standard and enable network communications through routable protocols, such as the Internet Protocol (IP). Incoming packets received via a NIC after an operating system has loaded may be provided to an operating system driver for handling. Among other attributes, the presence of a NIC in a computing device may also enable communication to take place between the computing device and a remotely located user or process looking to remotely manage the computing device.